[小ネタ]特定のバックアップVaultの復旧ポイントを一括で削除するCLI
はじめに
こんにちは。大阪オフィスの林です。
AWS BakcupのバックアップVaultに保存された復旧ポイントの削除がマネージメントコンソールからだと少々手間だったのでCLIからの操作方法(一括削除方法)を紹介したいと思います。
なにが手間か?
はじめにどの辺りが手間と感じたのか、マネージメントコンソールでバックアップボールトを削除するオペレーションを紹介したいと思います。
AWS Backupのダッシュボードからバックアップボールトを選択し、対象のバックアップボールトを選択します。
確認を求められるので、対象のバックアップボールト名を入力し、「バックアップボールトを削除」を選択します。
『復旧ポイントがあるのでバックアップボールトを削除できません。』と怒られます。
復旧ポイントを削除しようとするのですが、ラジオボタンになっていて1個1個消す必要があり、数が多いと骨が折れます。一括で削除してくれそうなボタンもありません。_| ̄|○ ガックリ
上記が手間と感じたオペレーションです。AWS Backupはバックアップしたデータのストレージサイズに応じてコストがかかります。そのため不要なバックアップデータは速やかに削除したいですよね。ということでさっそくCLIでの操作を紹介します。
事前準備
コマンドの紹介
aws cliのbackup
コマンドを使って、復旧ポイントを一括で削除します。標準で一括削除するようなコマンドが用意されている訳では無いのでjq
コマンドを使いながら操作していきます。なお、実際に動かす際は、バックアップボールト名を実際の環境に合わせて変更ください。例示のコマンドのtest-vault
の部分がバックアップボールト名を記載する部分となります。
aws backup list-backup-jobs | jq -r '.BackupJobs[] | select(.BackupVaultName == "test-vault" )' | jq -r '.RecoveryPointArn' | xargs -L 1 aws backup delete-recovery-point --backup-vault-name test-vault --recovery-point-arn
バックアップボールトそのものを削除するコマンド(delete-backup-vault
)も用意されているのですが、現状force
オプションのような強制削除するものも用意されていないので、CLIからでも復旧ポイントの削除 → バックアップボールトの削除という順で掃除する必要があります。
やってみた
ひとまずdelete
コマンドを実行しない状態でバックアップボールトに紐づく復旧ポイントを確認してみます。今回の場合test-vault
というバックアップボールトに紐づく復旧ポイントが19個あることが分かります。
[ec2-user@ip-172-16-0-92 ~]$ aws backup list-backup-jobs | jq -r '.BackupJobs[] | select(.BackupVaultName == "test-vault" )' | jq -r '.RecoveryPointArn' arn:aws:ec2:ap-northeast-1::image/ami-08eff1fffd9c42361 arn:aws:ec2:ap-northeast-1::image/ami-0fa1ae3210cd7b852 arn:aws:ec2:ap-northeast-1::image/ami-06d18eea160faa93f arn:aws:ec2:ap-northeast-1::image/ami-039d15e9e825dd420 arn:aws:ec2:ap-northeast-1::image/ami-0c7a6a473a815d797 arn:aws:ec2:ap-northeast-1::image/ami-087d857f3440f0629 arn:aws:ec2:ap-northeast-1::image/ami-075844adcd57005d1 arn:aws:ec2:ap-northeast-1::image/ami-0afc069b24576dddb arn:aws:ec2:ap-northeast-1::image/ami-0498b0524c7e0d73b arn:aws:ec2:ap-northeast-1::image/ami-0b295fac7469d2e17 arn:aws:ec2:ap-northeast-1::image/ami-036c2bf513fc3a5bd arn:aws:ec2:ap-northeast-1::image/ami-0dc8bea65b9661b62 arn:aws:ec2:ap-northeast-1::image/ami-0f90503b5beee7b75 arn:aws:ec2:ap-northeast-1::image/ami-04b0126ebf1f756fc arn:aws:ec2:ap-northeast-1::image/ami-01e0179cf2c9f1c9f arn:aws:ec2:ap-northeast-1::image/ami-038ef303146d92166 arn:aws:ec2:ap-northeast-1::image/ami-086e29ba33e9e6dec arn:aws:ec2:ap-northeast-1::image/ami-03175347ed58836a7 arn:aws:ec2:ap-northeast-1::image/ami-07ade61b15a7c0a18
それでは実際にdelete
コマンド付きで実行してみます。特に戻り値はありません。
aws backup list-backup-jobs | jq -r '.BackupJobs[] | select(.BackupVaultName == "test-vault" )' | jq -r '.RecoveryPointArn' | xargs -L 1 aws backup delete-recovery-point --backup-vault-name test-vault --recovery-point-arn
マネージメントコンソールからも確認してみると復旧ポイントが全て消えていることが分かります。
確認を求められるので、対象のバックアップボールト名を入力し「バックアップボールトを削除」を選択します。
まとめ
かゆいところに手が届きやすいのがCLIでの操作を思っています。手間と感じたマネージメントコンソールでの作業は、ぜひCLIでの作業も検討してみましょう!
以上、大阪オフィスの林がお送りしました!